//package com.util;
//
//
//import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
//import org.elasticsearch.action.support.master.AcknowledgedResponse;
//import org.elasticsearch.client.IndicesAdminClient;
//import org.elasticsearch.client.transport.TransportClient;
//import org.elasticsearch.common.settings.Settings;
//import org.elasticsearch.common.transport.TransportAddress;
//import org.elasticsearch.common.xcontent.XContentBuilder;
//import org.elasticsearch.transport.client.PreBuiltTransportClient;
//
//import java.net.InetAddress;
//import java.net.UnknownHostException;
//
//
///**
// * @author CHL
// * @ClassName: EsUtils
// * @Description: es工具类
// * @date 2021/12/22 10:26
// * @Version 1.0
// */
//public class EsUtils {
//
//    //ES client
//    private static TransportClient client;//获取一个ES的客户端对象叫client
//    private static final String CLUSTER_NAME="elasticsearch";
//    private static final String HOST_IP="127.0.0.1";
//    private static final int TCP_PORT=9300;
//    static Settings sttings= Settings.builder()
//            .put("cluster.name",CLUSTER_NAME)//集群名字CLUSTER_NAME
//            .build();
//    /**
//     * 获取client对象
//     */
//    public static TransportClient getCLient(){
//        if(client == null){
//            synchronized (TransportClient.class){
//                try {
//                    client=new PreBuiltTransportClient(sttings)
//                            .addTransportAddress(
//                                    new TransportAddress(InetAddress.getByName(HOST_IP),TCP_PORT)
//                                    //ES的master的主机名和端口号默认9300
//                            );
//                } catch (UnknownHostException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        System.out.println("连接成功"+client.toString());
//        return client;
//    }
//    /**
//     * 通过ES的客户端对象，获取索引管理对象
//     * 获取index  admin  对象
//     */
//
//    public static IndicesAdminClient getIndicesAdminClient(){
//        return getCLient().admin().indices();
//    }
//
//    /**
//     * 创建一个 index  库
//     * 注意：es里面索引库的名称 都需要小写
//     */
//    public static  boolean createIndex(String indexName){
//        CreateIndexResponse response = getIndicesAdminClient()
//                .prepareCreate(indexName.toLowerCase())//通过索引管理对象创建索引
//                .setSettings(
//                        Settings.builder()
//                                .put("index.number_of_shards", 3)//分片个数
//                                .put("index.number_of_replicas", 2)//副分片个数
//                ).execute().actionGet();
//        return response.isShardsAcknowledged();//返回boolean值，是否创建成功
//    }
//
//    /**
//     * 创建index，对上面方法的优化
//     *
//     * @param indexName
//     * @param numberShards
//     * @param numberreplicas
//     * @return
//     */
//    public static boolean createIndex(String indexName, int numberShards, int numberreplicas) {
//        AcknowledgedResponse response = getIndicesAdminClient()
//                .prepareCreate(indexName.toLowerCase())
//                .setSettings(
//                        Settings.builder()
//                                .put("index.number_of_shards", numberShards)
//                                .put("index.number_of_replicas", numberreplicas)
//                ).execute().actionGet();
//        return response.isAcknowledged();
//    }
//
//    /**
//     * 删除index
//     *
//     */
//    public static boolean deleteIndex(String indexName){
//        AcknowledgedResponse response = getIndicesAdminClient()
//                .prepareDelete(indexName.toLowerCase())
//                .execute().actionGet();
//        return response.isAcknowledged();
//    }
//
//    /**
//     * 设置mapping   建表语句
//     * @param indexName 表名，必须全部小写
//     * @param typeName    表类型
//     * @param mappingStr  表字段
//     * @return
//     */
//    public static boolean setIndexMapping(String indexName, String typeName, XContentBuilder mappingStr){
//        IndicesAdminClient indicesAdminClient = getIndicesAdminClient();
//
//        AcknowledgedResponse putMappingResponse = indicesAdminClient.preparePutMapping(indexName.toLowerCase())
//                .setType(typeName)
//                .setSource(mappingStr)
//                .execute()
//                .actionGet();
//
//        return putMappingResponse.isAcknowledged();
//    }
//
//}
